home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / share / dos / progr / svga.arj / CPU.PAS next >
Encoding:
Pascal/Delphi Source File  |  1993-07-27  |  2.1 KB  |  100 lines

  1. Unit CPU;
  2.  
  3. Interface
  4.  
  5. Const
  6.   V640X400X256 = $100;
  7.   V640X480X256 = $101;
  8.   V800X600X16 = $102;
  9.   V800X600X256 = $103;
  10.   V1024X768X16 = $104;
  11.   V1024X768X256 = $105;
  12.   V1280X1024X16 = $106;
  13.   V1280X1024X256 = $107;
  14.   
  15. Type
  16.   SVGA_Vesa = Record
  17.                 Firma     : Array [1..4] Of Char;
  18.                 Version   : Word;
  19.                 Creador1  : Word;
  20.                 Creador2  : Word;
  21.                 Capacidad : Array [1..4] Of Char;
  22.                 Modos1    : Word;
  23.                 Modos2    : Word;
  24.                 Reservado : Array [1..238] Of Char;
  25.               End;
  26.   
  27. Function Comprueba_Vesa: Boolean;
  28. Procedure Muestra_Vesa;
  29. Procedure Modo_Vesa (Modo : Word);
  30.  
  31. Implementation
  32.  
  33. Uses Crt, DOS, texto;
  34.  
  35. Var
  36.   Vesa   : SVGA_Vesa;
  37.   Regs   : Registers;
  38.   VesaOk : Boolean;
  39.   
  40. Function Comprueba_Vesa: Boolean;
  41. Begin
  42.   Comprueba_Vesa := False;
  43.   Regs. AX := $4F00;
  44.   Regs. ES := Seg (Vesa);
  45.   Regs. DI := Ofs (Vesa);
  46.   Intr ($10, Regs);
  47.   If (Regs. AL = $4F) And (Regs. AH = $00) Then
  48.     Comprueba_Vesa := True;
  49. End;
  50.  
  51. Procedure Muestra_Vesa;
  52.  
  53. Var
  54.   I, J : Byte;
  55. Begin
  56.   Regs. AX := $4F00;
  57.   Regs. ES := Seg (Vesa);
  58.   Regs. DI := Ofs (Vesa);
  59.   Intr ($10, Regs);
  60.   If (Regs. AL = $4F) And (Regs. AH = $00) Then
  61.   Begin
  62.     ClrScr;
  63.     With vesa Do
  64.     Begin
  65.       WriteLn ('Tarjeta tipo:', Firma);
  66.       WriteLn ('Versión:', Hex1 (Hi (Version) ), '.', hex1 (Lo (version) ) );
  67.       Write ('Fabricante:');
  68.       I := 0;
  69.       Repeat
  70.         J := Mem [Creador2: Creador1 + I];
  71.         If J > 13 Then
  72.           Write (Chr (J) );
  73.         Inc (I);
  74.       Until J = 0;
  75.       WriteLn;
  76.     End;
  77.   End
  78.   Else
  79.     WriteLn ('Error al buscar tarjeta gráfica compatible VESA');
  80. End;
  81.  
  82. Procedure Modo_Vesa (Modo : Word);
  83. Begin
  84.   Regs. AX := $4F02;
  85.   Regs. BX := Modo;
  86.   Intr ($10, Regs);
  87.   If Regs. AL <> $4F Then
  88.   Begin
  89.     WriteLn ('No se encontró Tarjeta Compatible VESA.');
  90.     Halt (0);
  91.   End;
  92.   If Regs. AH <> $00 Then
  93.   Begin
  94.     WriteLn ('Tarjeta Compatible Vesa Detectada. Modo Gráfico no soportado');
  95.     Halt (1);
  96.   End;
  97. End;
  98.  
  99. Begin
  100. End.